package com.atguigu.yygh.cmn.controller;

import com.atguigu.yygh.cmn.readlistener.DictReadListener;
import com.atguigu.yygh.cmn.service.DictService;
import com.atguigu.yygh.hosp.result.R;
import com.atguigu.yygh.model.cmn.Dict;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

@RestController
@RequestMapping("/admin/dict")
@EnableSwagger2
//@CrossOrigin
public class DictController {
    @Autowired
    private DictService dictService;
    @Autowired
    private DictReadListener dictReadListener;

    /**
     * 前端根据dictCode查询数据字典列表
     * select * from dict where parent_id=(select id from dict_code=Province) 查询所有省份
     * select * from dict where parent_id=(select id from dict_code=Hostype) 医院等级列表
     * select * from dict where parent_id=(select id from dict_code=country) 查询国家
     * @param dictCode
     * @return
     */
    @GetMapping("/findByDictCode/{dictCode}")
    public R findByDictCode(@PathVariable("dictCode") String dictCode){

        List<Dict> list =dictService.findByDictCode(dictCode);
        return R.ok().data("list",list);
    }


    /**
     * 根据省市区的value查询数据字典名称
     */
    @GetMapping("/getName/{value}")
    public String getName(@PathVariable String value){
       String name = dictService.getName(value);
       return name;
    }

    /**
     * 根据value和dict_code查询医院等级名称
     * 根据医院等级的value,查询数据字典名称
     */
    @GetMapping("/getName/{value}/{dictCode}")
    public String getName(@PathVariable String value,@PathVariable String dictCode){
        return dictService.getName(value,dictCode);
    }


    /**
     * @GetMapping("/findAll")
     * public R dictList(){
     *    List<Dict> list = dictService.list();
     *    return R.ok().data("list",list);
     * }
     * @param file
     * @return
     */

    /**
     * 文件的导出
     * 导出数据,其实就是一个文件的下载(响应输出流,给客户端浏览器输出一个文件),接口的返回值可以是void类型
     * 文件下载(导出一个Excel文档)
     * 文件下载需要使用response对象
     */
    @GetMapping("/exportData")
    public void exportData(HttpServletResponse response){
        //将dict表中所有的数据写入到Excel表格中,下载给客户端浏览器
        dictService.exportData(response);
    }

    /**
     * 文件的上传(上传到数据库)
     */
    @PostMapping("/importData")
    public R importData(MultipartFile file){
        dictService.importData(file);
        return R.ok().message("上传成功");
    }

    /**
     * 根据数据字典查询下级
     * @param id
     * @return
     */
    @GetMapping("/dictList/{id}")
    public R dictList(@PathVariable Long id){
        List<Dict> list =dictService.dictList(id);
        return R.ok().data("list",list);
    }
}
